// import axios from '@/api';

// import * as api from '@/api/common/index';

import store from '@/store';

import { LOCAL_KEY } from '@/constant/dict';

let lastTime = null;

// let userAgent = navigator.userAgent;

// let isOpera = userAgent.indexOf('Opera') > -1;

// let isIE = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1 && !isOpera;

// let isIE11 = userAgent.indexOf('rv:11.0') > -1;

// let isEdge = userAgent.indexOf('Edge') > -1 && !isIE;

// window.onresize = function () {
// 页面变化，刷新页面
// if ((window.sessionStorage.getItem(LOCAL_KEY.IS_CURRENT_MODE) == 'PC' && window.innerWidth < 1274) || (window.sessionStorage.getItem(LOCAL_KEY.IS_CURRENT_MODE) == 'Mobile' && window.innerWidth >= 1274)) {
//     let target = this;
//     if (target.resizeFlag) {
//         clearTimeout(target.resizeFlag);
//     }
//     target.resizeFlag = setTimeout(function () {
//         location.reload();
//         target.resizeFlag = null;
//     }, 100);
//     if (window.innerWidth >= 1274) {
//         window.sessionStorage.setItem(LOCAL_KEY.IS_CURRENT_MODE, 'Mobile');
//     } else {
//         window.sessionStorage.setItem(LOCAL_KEY.IS_CURRENT_MODE, 'PC');
//     }
// }
// };

export default function () {
    window.addEventListener('mouseover', async function () {
        updateOnlineTime();
    });

    window.addEventListener('keydown', async function () {
        updateOnlineTime();
    });
}

/**
 * @description 不需要更新的页面
 */
const url = ['login', 'wizard'];

/**
 * @description 更新在线时间
 */
async function updateOnlineTime() {
    if (!url.some((part) => window.location.href.includes(part))) {
        if (!store.state.globalTimerStopFlag) {
            //更新当前时间
            let currentTime = new Date().getTime();

            lastTime = window.sessionStorage.getItem(LOCAL_KEY.IS_LAST_OPERATION_TIME);

            if (lastTime == null || parseInt(currentTime - lastTime) > 30 * 1000) {
                window.sessionStorage.setItem(LOCAL_KEY.IS_LAST_OPERATION_TIME, new Date().getTime()); //更新操作时间

                //TODO 屏蔽接口
                // await api.refreshTimeFromServer();
            }
        }
    }
}

// function onloadFun() {
//     axios.post('/action/logoutController?logoutFlag=0&v=' + Math.random());
// }

// function onclose() {
//     axios.post('/action/logoutController?logoutFlag=0&v=' + Math.random());
// }

/**
 * @description 关闭浏览器时，发起注销登录请求
 * 方法1：fetch -> keepalive，它允许用户在关闭浏览器时依然保持请求的正常发起，参考文章：https://developer.mozilla.org/en-US/docs/Web/API/Fetch
 * 方法2：Navigator.sendBeacon()，用于在页面卸载前发送少量数据到服务器，确保即使用户离开页面或关闭浏览器时，重要的跟踪和诊断数据仍然能够被发送，参考文章：https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/sendBeacon
 * 方法3：保底方案，100 死循环
 * @returns
 */
// function logout() {
//     const logoutUrl = '/action/logoutController?logoutFlag=1&delayTime=2000&v=' + Math.random();

//     if ('fetch' in window && Object.prototype.hasOwnProperty.call(Request.prototype, 'keepalive')) {
//         // 浏览器支持fetch的keepalive选项
//         fetch(logoutUrl, {
//             method: 'POST',
//             keepalive: true
//         });

//         return;
//     } else if (typeof navigator.sendBeacon === 'function') {
//         window.navigator.sendBeacon(logoutUrl);
//         return;
//     } else {
//         fetch('/action/logoutController?logoutFlag=1&delayTime=2000&v=' + Math.random(), {
//             method: 'POST'
//         });

//         let old_time = Date.now();

//         let new_time = Date.now();

//         let flag = true;

//         while (flag) {
//             new_time = Date.now();
//             if (new_time - old_time > 100) {
//                 break;
//             }
//         }
//     }
// }

// if (!isIE && !isEdge && !isIE11) {
//     window.onunload = function () {
//         logout();
//     };
// } else {
//     if (isIE || isIE11 || isEdge) {
//         onloadFun();
//     }

//     if (isIE11 || isEdge) {
//         window.onunload = function () {
//             axios.post('/action/logoutController?logoutFlag=1&delayTime=2000&v=' + Math.random());
//         };
//     }

//     if (isIE) {
//         window.onbeforeunload = function () {
//             axios.post('/action/logoutController?logoutFlag=1&delayTime=2000&v=' + Math.random());
//         };

//         window.onunload = onclose;
//     }
// }
